home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9511
/
ATA.CD
< prev
next >
Wrap
Text File
|
1996-03-03
|
21KB
|
376 lines
@VA jelen és a jövô merevlemezei@N
@VATA, ATAPI, EIDE...@N
Manapság egyre nagyobbak az alkalmazások, egyre
gyakrabban ki is növik merevlemezünket. A szép új, nagyobb
merevlemez megvételekor -- fôleg régebbi alaplap esetén --
furcsa meglepetések érhetnek. Vajon miért?
Amikor IBM PC/AT-kompatibilis számítógépen egy
DOS/Windows alatt futó program file-t akar beolvasni, kiad
-- a DOS-on keresztül -- a BIOS-nak egy olvasási parancsot.
E parancsban meg van adva a kért fej és sáv, a kezdô és a
beolvasandó szektorok száma (pontosabban lásd a keretezett
részben). E hívással legfeljebb 256 fejet, 1024 sávot és 63
szektort tudunk címezni. Mivel a DOS és a BIOS csak 512
byte-os szektort tud kezelni, így a maximális címezhetô
mennyiség kicsit kevesebb, mint 8 Gbyte. Nem csak
DOS/Windows alatt lényeges a BIOS hívás mikéntje, mert a
boot folyamatot is a BIOS vezérli, így a boot partíciót a
BIOS-nak értelmezni kell tudnia.
1988-ban megszületett az AT Attachment Interface, ami a
merevlemezek és a vezérlô oldaláról közelítette meg a
problémát: a vezérlôáramkörök nagyobb részét a drive-ra
integrálták, így született és terjedt el az Integrated Drive
Electronics (IDE) elnevezés. A pontos megnevezés azonban
ATA, az AT Attachment rövidítése. Ez a szabvány 16 fejet,
65535 sávot és 63 szektort tud címezni. Ha hozzávesszük
ehhez a szokásos 512 byte-os szektort, akkor mintegy 31,5
Gbyte-ot tudunk címezni.
A probléma azonban akkor adódik, ha a BIOS a hozzá
befutó hívást változatlanul továbbadja az ATA merevlemez
felé. Ekkor 16 fejet, 1024 sávot, és 63 szektort tudunk
címezni, azaz 504 Mbyte-ot (528482304 byte-ot).
Ez az oka annak a bizonyos 528 millió avagy 504 ""M"
byte-os határnak, amibe az ember egy normál ATA egységgel és
egy szokásos AT géppel ütközik. Ez a mai alkalmazásokhoz
viszont kevés, ezért kitaláltak egy olyan BIOS típust, ami
ezt leküzdi. Ezzel párhuzamosan készül az ATA-2 szabvány is.
A kettôt furcsa módon általában nem választják szét, pedig
az ATA-2 az ANSI-nak egy lemezekrôl és vezérlôkrôl szóló
szabványa, amiben szó nincs BIOS-ról.
Lássuk tehát az ATA-2 fôbb újdonságait!
@VGyorsabb átviteli módok@N
Az ATA (ATA-1) szabvány a PIO 0, 1 és 2-es módokat
definiálta, az ATA-2 viszont már a 3-ast és 4-est is. Ezért
használják erre (megint csak helytelenül) a Mode 3
elnevezést. Ezek a módok 16 bit átvitelének az idejét
jelzik.
Az átviteli módokat a @KPIO üzemmód@N táblázat mutatja be.
Látható, hogy a Mode 2-rôl a Mode 3-ra való áttérés nem
olyan drasztikus, viszont a legtöbb régi vinyó csak Mode
0-ra volt képes. Ezért vannak olyan hirdetések, hogy az EIDE
háromszor gyorsabb a normál IDE-nél.
@VDMA módok@N
A PIO módokon túl vannak még DMA módok is. A DMA a CPU
kikerülésével, közvetlenül éri el a memóriát. Egy valódi
multitaszkos operációs rendszer -- például az OS/2 vagy a
Linux -- alatt ez hasznos, mert a CPU addig csinál valami
mást. A DOS/Windows/Win95 alatt a CPU ez alatt vár arra,
hogy a DMA befejezze a mûködését, és a memóriában
megjelenjen az adat, így ez nem sok hasznot hajt.
Ráadásul az ISA/VLB alaplapokon a DMA vezérlô elavult és
lassú, így csak az úgynevezett busmaster kártyák
használhatók igazán. Ezekre a kártyákra DMA vezérlô van
építve -- ami sajnos megdrágítja ôket. Az EISA sínes
rendszerekben az alaplapi vezérlô 4 Mbyte/s, a PCI
rendszerekben 6-8 Mbyte/s sebességre képes. Ma még egyaránt
ritka a DMA-t támogató szoftver és hardver.
A támogatott üzemmódokat a @KDMA üzemmód@N táblázat mutatja
be. Mondanom se kell, hogy vannak vezérlôk, amik ezeket az
üzemmódokat mint gyorsított PIO módokat használják. Ez
általában igen nehezen szokott kiderülni -- ha egy vezérlô
""DMA Multiword Mode 2"-t támogat, attól még nem biztos,
hogy DMA-t használ, az meg különösen nem, hogy busmaster
lenne.
@VCserélhetô egységek támogatása@N
Ezt ATA Packet Interface-nek, röviden ATAPI-nak nevezik.
Egy ilyen egység szoftver oldalról majdnem ugyanolyan,
mintha SCSI lenne. Sajnos mivel még a szabvány elkészülte
elôtt elkezdtek özönleni az ATAPI CD-ROM meghajtók, ezért
sokkal több velük a probléma, mint egy SCSI CD-meghajtóval.
Biztató jelek már vannak: a Creative Labs kiadott olyan DOS
meghajtóprogramot az ATAPI CD-k számára, ami a legtöbb ilyen
egységgel már mûködik. (A Sony és a Mitsumi egységeivel az
írás pillanatában még nem.) A SCSI egyik nagy elônye
pontosan ez: egy adott SCSI kártya CD-ROM meghajtóprogramja
bármilyen ráaggatott CD-meghajtót meg tud hajtani.
@VRészletes egység-azonosítási lehetôség@N
Ez elegedhetetlenül szükséges a ""Plug-n-Play"-hez.
Segítségével egy egységrôl lekérdezhetô annak típusa,
tulajdonságai/üzemmódjai, többek között az általa támogatott
leggyorsabb üzemmód is.
@VEgy új címzési mód, az LBA@N
Ennek a közhiedelemmel ellentétben semmi köze az 504
Mbyte-os határ áttöréséhez. Mindössze arról van szó, hogy a
merevlemez szektoraira folyamatos sorszámozással
hivatkozunk. (A sorszám a régi fej, sáv, szektor -- CHS --
értékekbôl egyszerû szorzásokkal és összeadásokkal
elôállítható.)
@VKavarodás az ATA körül@N
Az EIDE a Western Digital marketing jelszava,
lehetôségei gyakorlatilag megegyeznek a még nem teljesen
elkészült ATA-2 szabványéval, így esetleg kompatibilitási
gondjaink lehetnek.
Szintén a WD-hez tartozik az EBIOS, szerintük ez is a
szabvány része. Sajnálatos módon úgy tûnik, hogy ez
általános irányzat: egyes cégek a nemzeti/nemzetközi
szabványok elôzeteseibôl kváziszabványokat kreálnak és ezzel
borzalmas zûrzavart támasztanak.
A Fast ATA ""szabványban" a Seagate/Quantum által
támogatott ATA-2 részletek szerepelnek, de az ATAPI nem.
A Fast ATA-2 majdnem megegyezik a Fast ATA-val, de azzal
ellentétben már a PIO Mode 4-et is támogatja, tehát ez nem
az ATA-2 szabvány gyorsítása, hanem a Fast ATA
háziszabványé.
Åltalánosságban mindezek ellenére számíthatunk rá, hogy
az EIDE, Fast ATA, Fast ATA-2 egységek legtöbbször gond
nélkül együttmûködnek.
@VTúl a félgigás korláton@N
Az 504 Mbyte-os határt a továbbfejlesztett Enhanced
BIOS-ok törik meg. Ezek attól továbbfejlesztettek, hogy a
program felôl beérkezett CHS értékeket átszámolják,
átfordítják, és úgy adják tovább. Ez a számolás
egyszerûsödik, ha LBA címzést használunk, de nem ez a
lényeges. Nézzünk erre az átszámításra egy példát!
Ha van egy 1600 sávos és 16 fejes merevlemezünk, akkor a
BIOS a program felé ezt egy 800 sávos és 32 fejes egységnek
fogja mutatni. A BIOS a beérkezô CHS értékekbôl általában
LBA-t számol, és ebbôl számol aztán egy másik, a merevlemez
felé továbbított CHS értéket. Látható, hogy ha a merevlemez
fel tudja használni az LBA értéket, akkor a BIOS-ban kimarad
egy számítási fázis. Ráadásul ilyenkor a merevlemeznek is
kevesebbet kell számolnia. Azok a CHS értékek, amit a BIOS
megkap, mint a merevlemez fizikai paramétereit, igen ritkán
egyeznek meg annak tényleges belsô értékeivel. Sôt, ma már
nem is nagyon egyezhetnek meg, mert a legtöbb merevlemez a
külsô sávokon több szektort tárol, mint a belsôkön.
Még egyszer hangsúlyozom: a fordítás tudja megtörni az
504 Mbyte-os határt, s nem az, hogy a merevlemez szektorait
egy nagy vagy három kis számmal címzi a BIOS. Ezt azért
hangsúlyozom ennyire, mert sajnos EBIOS-ból is többféle van,
mint hamarosan látni fogjuk. Mielôtt rátérnék a BIOS-ok
részletes ismertetésére, szükség van még a drive-paraméter
táblázatok ismertetésére:
Ebbôl létezik fix (FDPT), ami a régi BIOS-ok sajátja, és
csak egyféle CHS értéket tartalmaz. Az EDPT viszont már két
CHS értéket tartalmaz -- ez jelzi egy ""fordítós" BIOS
jelenlétét.
@VA BIOS-ok fajtái@N
@V*@N Az eredeti AT BIOS. Nincs fordítás benne. '94 elôtti
BIOS-okban ez a leggyakoribb.
@V*@N Vannak olyan BIOS-ok, amelyekben 1024 feletti sáv-
(cylinder-) számot is megadhatunk. Ezt feltehetôen a Novell
vagy az SCO kérésére építették be. A modernebb operációs
rendszerek ezt gond nélkül ki is tudják használni, tehát
lehet olyan partíciónk, ami túlnyúlik az 1024. sávon. Ez a
bootolásnál leírtak miatt nem lehet a boot partíció.
@KNagyon@N ügyeljünk arra, hogy bizonyos rossz
implementációk az 1024 feletti értékekbôl levonnak 1024-et,
ahelyett, hogy 1024-re csonkolnák! Ez még manapság is felüti
a fejét, olyan problémák képében, hogy beraktam egy 740
Mbyte-os vinyót, 1500 sáv, 63 szektor, 16 fej van beállítva,
és csak 234 Mbyte-ot látok belôle. Ez pontosan 1500-1024=476
sávot, 63 szektort, és 16 fejet jelent. Ehelyett 504
Mbyte-ot kéne látni belôle. Az azonosításban is ez
segédkezik: ha egy több, mint 1024 sávot tartalmazó vinyót
kötünk rá, és egységazonosítást kérünk a BIOS-tól (INT 13H
AH=08H), akkor legfeljebb 1024 sávot adhat vissza.
@V*@N Az elôzôhöz hasonló, legfeljebb 4096 cilindert
támogató BIOS. Ezt a trükköt úgy éri el, hogy a megfelelô
BIOS hívásban a sávszám felsô két bitjét a fejszám felsô két
bitjébe írja. Ez ATA egységeknél tényleg nem használt, de
ennek ellenére ez nagyon veszélyes trükk lehet, mert a
legtöbb program nem támogat ilyen típusú címzéseket.
Azonosításnál a BIOS 1024 feletti sávszámot is visszaadhat.
ùgy tudjuk, ma már senki sem gyárt ilyen BIOS-t.
@V*@N A Compaqnak a több mint 1024 sávos ESDI
merevlemezekkel felszerelt gépeiben tûnt fel ez a típus.
EDPT-t készít, ha a sávszám nagyobb mint 1024, és FDPT-t ha
kisebb, azaz ez a BIOS már támogat fordítást. Legfeljebb 4
egységet képes kezelni. A legtöbb ""normál" ATA (IDE)
vezérlô csak 2 egységet ismer, 4 ATA egység egyszerûen úgy
kapcsolható a géphez, hogy két vezérlôt építünk be.
E második vezérlô címét még az XT BIOS-ban lefoglalták,
de sokáig nem használta senki. Azonban az ATAPI CD-meghajtók
(és kisebb mennyiségben szalagos meghajtók) megjelenésével
szükség lett kettônél több ATA(-2) egység meghajtására.
@V*@N Az @KIBM/Microsoft BIOS Extensions@N dokumentum. Ez sok
éven át ""titkos"-nak volt jelölve, így nem terjedt el
széles körben. Támogat EDPT-t, de csak 2 egységre. Az LBA
bekapcsolása nem változtatja meg a fordítási algoritmust.
Definiálnak néhány új BIOS hívást is, a régi funkciókódokhoz
40h-t kell hozzáadni. Ezeknél az új hívásoknál már 4 byte-os
LBA-t adunk meg, így gond nélkül címezhetôk igen nagy
egységek, egészen 2^32 szektorig, azaz 2 Tbyte-ig. Sajnos
ezek a hívások még egyáltalán nincsenek elterjedve, pedig
ideális megoldást jelentenének. A SCSI egységeknél például
már jelentkezik a régi BIOS hívások 8 Gbyte-os határának
problémája.
@V*@N A @KPhoenix Enhanced Disk Drive@N specifikáció. Nagyon
hasonló az elôzôhöz, de mint említettem, a Phoenix-féle
FDPT-kiterjesztés (azaz EDPT) sokkal több adatot tartalmaz,
mint az IBM/MS-féle. Például tartalmazza az egység
vezérlôjének címét és DMA csatornáját, ezzel szinte
tetszôleges számú ATA egység/vezérlô telepíthetô. Az eredeti
specifikáció nem tartalmazta az új BIOS hívásokat, de a
tényleges megvalósítások nagyobb része már ezeket is ismeri.
@V*@N @KWestern Digital EBIOS@N. Ha bekapcsoljuk az ""LBA
mode"-ot, akkor EDPT-t épít, 63 szektorral és 16/32/64 stb.
fejjel. Ha kikapcsoljuk ezt, akkor csak FDPT-t épít. Csak
akkor mûködik a fordítósdi, ha a merevlemez támogatja az LBA
használatát. Ez a megoldás azért katasztrofális, mert az
amúgy teljesen ártalmatlan LBA mode bekapcsolása
megváltoztatja a merevlemez címzését, és @Kadatvesztéshez@N
vezethet.
E BIOS háza tájáról származik az a tévhiedelem, hogy az
LBA oldaná meg az 504 Mbyte-os problémát. Sajnos ma a
legtöbb BIOS ilyen típusú. Könnyû ôket megismerni arról,
hogy az LBA nem egy egyszerû kapcsoló, hanem az egység
méreteihez tartozó adat. Az adatvesztések elkerülése végett
mindig ugyanolyan módban használjuk a merevlemezt, mint
amiben particionáláskor volt. A WDEBIOS akár négy egységet
is képes támogatni.
@V*@N Olyan @Kszoftverek@N, melyek ellátják a EBIOS feladatait.
Feltehetôen a @KDisk Manager@N volt az elsô, a másik ilyen az
@KEZ-Drive@N. Ezekkel a szoftverekkel komoly kompatibilitási
gondok lehetnek, ha nem az MS-DOS végzi a file-kezelést.
Más operációs rendszer legtöbbször nem tud mit kezdeni
ezekkel a szoftverekkel. Tehát már a WfW 3.11 32 bites
file-elérés üzemmódjában is speciális driver kell. Minden
létezô módon kerüljük ezeket a szoftvereket! Ha egy régi
alaplapra -- aminek nincs semmilyen EBIOS-a -- szeretnénk
csatlakoztatni egy nagy kapacitású merevlemezt, akkor
fontoljuk meg inkább egy saját EBIOS-szal bíró vezérlô
megvásárlását.
Ezek nemcsak VLB, hanem ISA sínre építve is léteznek, és
általában nem túl drágák. ISA sínes kártyából egy
típuscsaládot ismerünk, a @KGSi@N cég termékeit. Egy GSi 21-es
vezérlôt a szerzô több mint egy éve használ egy 540 Mbyte-os
merevlemezzel és egy ATAPI CD-ROM meghajtóval minden gond
nélkül. Ha már a vezérlôkrôl és az ATAPI egységekrôl esik
szó, akkor nagyon ügyeljünk, ha cache-es vezérlôt
vásárolunk! Ezek a kártyák -- a legújabbak kivételével --
nem ismerik az ATAPI egységeket. Hacsak nincs külön
feltüntetve rajtuk, valószínûleg nem támogatnak ilyen típusú
CD-ROM- és szalagmeghajtókat.
@VMi van a gépünkben?@N
Hogyan ismerhetjük fel vásárláskor, hogy milyen BIOS-t
kapunk? Egy 1994. elôtti BIOS-ról bizton eldönhetô, hogy nem
EBIOS. (Kivéve a fent leírt Compaq BIOS-t, de az rendkívül
ritka darab, csak bizonyos Compaq gépekben található.) A
Phoenix BIOS-ból 4.03-nál nagyobb verziószámú, AMI
BIOS-okból a '94. 04. 25-nél újabbak általában támogatják
ezt a bizonyos fordítást. (Nem is lesz sok problémánk, ha
nem kapcsolgatjuk a WDEBIOS-ban az LBA-t.) Ha nem egyértelmû
a kérdés, akkor tegyünk rá egy nagy kapacitású merevlemezt,
és nézzük meg, hogy az MS DOS FDISK-je mit lát belôle: a
teljes merevlemezt, vagy csak 504 Mbyte-ot.
Következzen a sebesség kérdése. Egy helyisínes (VLB vagy
PCI) vezérlô csak akkor képes gyorsabban mûködni, ha egy
driver a memóriában van. Ez lehet a kártya saját BIOS-a,
vagy egy egyszerû szoftveres driver. A nagy probléma az,
hogy sok driver meglehetôsen instabil. Sajnos a saját BIOS
csak DOS alatt jelent bármit is, minden más operációs
rendszer alatt szükséges a saját -- esetleg instabil --
driver.
Sebességproblémák merülnek fel akkor is, ha egy régi
(ATA-1) és egy új, gyors ATA-2 egység kerül egy vezérlôre.
Ha erre kényszerülünk, akkor két eset van: az egyik, hogy
igen jó a vezérlô, és támogat különbözô sebességeket a két
egységen. A másik: az ATA-2 egység szépen visszalép
valamilyen alacsonyabb sebességre.
A másik hasonló probléma: ha egy ATA-2 egység egy régi
vezérlôre kerül, mûködik-e? A válasz: igen, de lassabban. Az
ATAPI egységek is mûködnek legtöbbször (lásd fentebb az erre
vonatkozó megjegyzést!)
@KNégyesi Károly@N
@VA PIO átviteli módok@N
PIO mód Idô (ns) Åtvitel (MB/s) ATA szabvány száma
0 600 3,3 1
1 383 5,2 1
2 240 8,3 1
3 180 11,1 2
4 120 16,6 2
@VDMA üzemmódok@N
@VEgyszavas átvitel:@N
DMA módok Idô (ns) Åtvitel (MB/s) ATA szabvány száma
0 960 2,1 1
1 480 4,2 1
2 240 8,3 2
@VTöbbszavas átvitel:@N
0 480 4,2 1
1 150 13,3 2
2 120 16,6 2
@VMekkora is az egy ""Mega"?@N
A dokumentációkban található MB rövidítés kétféle
feloldásáról pár szó: az egyik egymillió byte, a másik pedig
""M" byte (Mbyte), vagyis 1048576 byte. Ezért van az, hogy a
frissen vásárolt merevlemezünk kapacitását az FDISK közel
5%-kal kisebbnek mutatja: a gyártó millió byte-ot ért MB
alatt, a hirdetésben is ez van, az FDISK viszont ""M"
byte-ban számol. Ha erre panaszkodik valaki, akkor általában
azt a választ kapja, hogy ""persze, a rendszerterületek is
elvesznek valamennyi helyet". Viszont ez egyrészt még az
elôtt van, hogy rendszerterületek léteznének, másrészt
nagyobb merevlemezeken ez több tíz Mbyte-nyi veszteség, ami
azért kicsit sok rendszerterületnek.
@VRégi és új BIOS INT 13h olvasási parancsok@N
@VA hagyományos:@N
AH = 02h
AL = a beolvasandó szektorok száma (nem lehet zéró)
CH = a sáv (cylinder) számának alsó 8 bitje
CL = a szektor száma (1--63, 0--5. bit) és a sáv
számának felsô 2 bitje (6--7. bit)
DH = fej száma
DL = egység száma (a 7. bit beállítva merevlemezeknél)
ES:BX mutat egy adatpufferre
@VAz új IBM/MS-féle:@N
AH = 42h
DL = egység száma
DS:SI mutat az egység címzését tartalmazó csomagra.
Ennek felépítése:
Offset Méret Leírás
00h byte 10h (a csomag mérete)
01h byte foglalt (0)
02h word az átviendô blokkok száma
04h dword mutató az adatpufferre
08h qword a kezdô abszolút blokk címe (LBA)
(Forrás: Ralf Brown's Interrupt List)